import path from 'path';
import multer from 'multer';


// 上传文件的存储方式设置
const storage = multer.diskStorage({
    // 设置文件存储路径 => 该方法是multer模块自行调用
    destination:function(req, file, next){
        next(null,"public/upload/")
    },
    // 设置文件名称 => 该方法是multer模块自行调用
    filename:function(req, file, next){
        // 时间戳+随机数生成的唯一图片名
        let filename = (new Date().getTime())+Math.ceil(Math.random()*10000);
        // 使用唯一值算法生成随意的唯一字符串 => 需要安装对应的算法模块
        // 通过上传文件的原始名称，获取到文件扩展名称
        let ext = path.extname( file.originalname );
        // 随机名拼接扩展名
        filename = filename + ext;
        next(null,filename);
    }
});

// 上传文件的大小和类型设置
const upload = multer({
    storage:storage,
    limits:{
        fileSize:5*1024*1024 // 5M
    },
    fileFilter:function(req, file, next){
        // 图片类型正则
        const filetypes = /jpeg|jpg|png|gif/;
        // 获取图片的自定义类型
        const mimetype = filetypes.test(file.mimetype);
        // 获取图片的扩展名
        const extname = filetypes.test(path.extname(file.originalname).toLowerCase());
        if(mimetype&&extname){
            next(null,true);
        }else{
            next("只允许上传jpeg、jpg、png、gif文件！")
        }
    }
});

export default upload;
